/**
 * Afterimage shader
 * I created this effect inspired by a demo on codepen:
 * https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&
 */

var AfterimageShader = {
  "uniforms": {
    'damp': {"value": 0.96},
    'tOld': {},
    'tNew': {}
  },
  "vertexShader": [
    'varying vec2 vUv;',
    'void main() {',
    '	vUv = uv;',
    '	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',
    '}'
  ].join('\n'),
  "fragmentShader": [
    'uniform float damp;',
    'uniform sampler2D tOld;',
    'uniform sampler2D tNew;',
    'varying vec2 vUv;',
    'vec4 when_gt( vec4 x, float y ) {',
    '	return max( sign( x - y ), 0.0 );',
    '}',
    'void main() {',
    '	vec4 texelOld = texture2D( tOld, vUv );',
    '	vec4 texelNew = texture2D( tNew, vUv );',
    '	texelOld *= damp * when_gt( texelOld, 0.1 );',
    '	gl_FragColor = max(texelNew, texelOld);',
    '}'
  ].join('\n')
};
